﻿#pragma once
#include <iostream>
#include <thread>
#include <mutex>
#include <vector>
#include <chrono>
#include "xplaneConnect.h" // 保留必要的头文件包含

#ifndef MYIP
#define MYIP "10.83.115.103"
#endif

using namespace std;

//本来是main函数里面要用的
#include <graphics.h>
#include <algorithm> // 用于 std::min

#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

// 各仪表盘数据类型及共享数据结构体
struct DashboardData {
    std::mutex mtx;          // 互斥锁，用于保护数据访问
    mouse_msg msg;
    float pitch, roll, heightAM, airspeed, verticalSpeed, turn_rate, turn_rate2, heading, vor1hdef, vor2hdef, vor1dr, vor2dr, vor1vdf;
    // 其他仪表盘数据可在此继续添加
    float Oilc, Oilp;//油温油压
    float I, pressure;//电流，压力
    float left, right, engine;//左侧右侧油箱，燃油速度
    float engineRPM;//转速表转速
};

extern DashboardData sharedData;  // 声明全局共享数据

// 数据获取线程函数声明（原 xplaneDataThread）
void xplaneDataThread();

// 绘制线程函数声明（原 drawingThread，参数根据需求保留）
void drawingThread(
    int width,
    int height,
    PIMAGE homepage,
    float scale,
    int offset_x,
    int offset_y
);

//将未完善的部分注释
//
//// 姿态仪数据
//struct AttitudeIndicatorData {
//    std::mutex mtx;
//    float pitch;
//    float roll;
//};
//
//// 高度表数据
//struct AltimeterData {
//    std::mutex mtx;
//    float heightAM;
//};
//
//// 空速表数据
//struct AirspeedIndicatorData {
//    std::mutex mtx;
//    float airspeed;
//};
//
//// 垂直速度表数据
//struct VerticalSpeedIndicatorData {
//    std::mutex mtx;
//    float verticalSpeed;
//};
//
//// 转弯协调仪数据
//struct TurnCoordinatorData {
//    std::mutex mtx;
//    float turn_rate;
//    float turn_rate2;
//};
//
//// 航向仪数据
//struct HeadingIndicatorData {
//    std::mutex mtx;
//    float heading;
//};
//
//// VOR1导航仪数据
//struct Vor1Data {
//    std::mutex mtx;
//    float vor1hdef;
//    float vor1dr;
//};
//
//// VOR2导航仪数据
//struct Vor2Data {
//    std::mutex mtx;
//    float vor2hdef;
//    float vor2dr;
//};
//
//// 鼠标数据
//struct MouseData {
//    std::mutex mtx;
//    mouse_msg msg;
//};
//
//// 发动机数据（油温油压）
//struct EngineData {
//    std::mutex mtx;
//    float Oilc; // 油温
//    float Oilp; // 油压
//};
//
//// 电气系统数据
//struct ElectricalData {
//    std::mutex mtx;
//    float I;        // 电流
//    float pressure; // 压力
//};
//
//// 全局共享数据实例
//extern AttitudeIndicatorData sharedAttitudeIndicatorData;
//extern AltimeterData sharedAltimeterData;
//extern AirspeedIndicatorData sharedAirspeedIndicatorData;
//extern VerticalSpeedIndicatorData sharedVerticalSpeedIndicatorData;
//extern TurnCoordinatorData sharedTurnCoordinatorData;
//extern HeadingIndicatorData sharedHeadingIndicatorData;
//extern Vor1Data sharedVor1Data;
//extern Vor2Data sharedVor2Data;
//extern MouseData sharedMouseData;
//extern EngineData sharedEngineData;
//extern ElectricalData sharedElectricalData;
//
//// 数据获取线程函数声明
//void xplaneDataThread();
//// 仪表数据更新函数声明
//void updateAttitudeIndicator();
//void updateAltimeter();
//void updateAirspeed();
//void updateVerticalSpeed();
//void updateTurnCoordinator();
//void updateHeadingIndicator();
//void updateVOR1();
//void updateVOR2();
//void updateMouseData();
//void updateEngineData();
//void updateElectricalData();
//// 绘制线程函数声明
//void drawingThread(
//    int width,
//    int height,
//    PIMAGE homepage,
//    float scale,
//    int offset_x,
//    int offset_y
//);